package game;

public abstract class MagicEffect implements Cloneable, Loadable {
	protected String tag = "";
	
	public abstract EffectStage getStage();
	public abstract boolean canHazTip(Item.ItemType tip);
	public abstract void doEffect(Character caster, Character target);
	public abstract String toString();
	public abstract void generateForLevel(int lvl);
	public abstract boolean stacksWith(MagicEffect e);
	public abstract void absorb(MagicEffect e);
	
	public MagicEffect clone()
	{
		try {
			return (MagicEffect) super.clone();
		} catch (CloneNotSupportedException e) {
			return null;
		}
	}
	
	@Override
	public String getTag() {
		return tag;
	}
}
